package jvm.classloader;
/*
    常量在编译阶段会存入到调用这个常量的方法所在类的常量池中
    本质上，调用类并没有直接引用到定义常量的类，因此并不会触发定义常量类的初始化
    在这里，Parent2的常量放在了Test2的常量池中，之后Parent2就和Test2就没有任何关系了
    甚至我们可以将Parent2的.class文件删除
 */
/*
   助记符
   ldc：表示将int、float或是String类型的常量值从常量池中推送至栈顶
   bipush：表示将单字节（-128 ~ 127）常量值推送至栈顶
   sipush: 表示将一个短整型常量（-32768 ~32767）常量值推送至栈顶
   iconst_1:表示将int类型常量1推送至栈顶(iconst_1 ~ iconst_5)
 */
public class Test2 {
    public static void main(String[] args) {
       // System.out.println(Parent2.str1);
        System.out.println(Parent2.str2);
    }

}
class Parent2 {
    public final static String str1 = "hello world";
    public  static String str2 = "津津";
   // public final static short s = 7;
    static {
        System.out.println("Myparent2 static block");
    }
}
